byte smery[4] = {10,8,9,11}; //nahoru, dolu, doprava, doleva
byte pinyTlacitka[3] = {4,3,2}; //leve, prostredni, prave
byte tlacitka[3] = {MOUSE_LEFT, MOUSE_MIDDLE, MOUSE_RIGHT};
byte posledniStavTlacitek[3] = {LOW,LOW,LOW};
byte hodnotySmeru[4][2] = {{0,-1},{0,1},{1,0},{-1,0}};
//nahoru, dolu, doprava, doleva
byte i;
byte limitPohyb = 2;
//jak casto se bude pohybovat mysi, aby nebyla informace zasilana moc casto
long posledniPohyb = 0;
//promenna pro ulozeni casu posledniho odeslani prikazu
 
void setup() {
    Mouse.begin();
    for(i = 0; i <= 2; i++){
        pinMode(pinyTlacitka[i], INPUT);
    }
    for(i = 0; i <= 3; i++){
        pinMode(smery[i], INPUT);
    }
}
 
void loop() {
    for(i = 0; i <= 2; i++){
        if(digitalRead(pinyTlacitka[i]) != posledniStavTlacitek[i]){ //stav tlacitka se zmenil
            if(digitalRead(pinyTlacitka[i]) == HIGH){
                Mouse.press(tlacitka[i]);
            }
            else{
                Mouse.release(tlacitka[i]);
            }
            posledniStavTlacitek[i] = !(posledniStavTlacitek[i]); 
        }
    }
    
    if(posledniPohyb + limitPohyb < millis()){
        for(i = 0; i <=3; i++){
            if(digitalRead(smery[i]) == HIGH){
                Mouse.move(hodnotySmeru[i][0],hodnotySmeru[i][1],0);
            }
        }	
        posledniPohyb = millis();
    }
}